import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Un cañon antitanque controlado por dos soldaditos.
 * Efectivo contra tanques, pero se mueve muy lento.
 * 
 * @author Mario Alberto Valencia Valero
 */
public class ArmaAntitanque extends Unidad
{
    private int turnosParaDisparar = 0;
    private GreenfootSound sonidoDisparo,
                   sonidoExplosion;
    
    /**
     * Constructor
     * @param col  color de la unidad
     * @param humano  controlado por el jugador?
     */
    public ArmaAntitanque(Color col, boolean humano)
    {
        super(col, humano);
        setImage("ArmaAntitanque_"+color.name()+".gif");
        getImage().scale( (int)(getImage().getWidth()*.5), (int)(getImage().getHeight()*.5) );
        vida = 50;
        velocidad = 2;
        sonidoDisparo = new GreenfootSound("tank_firing_sound.wav");
        sonidoExplosion = new GreenfootSound("tank_exploding.wav");
    }
    
    /**
     * Actuar.
     */
    public void act() 
    {
        super.act();
        if( turnosParaDisparar > 0 ) turnosParaDisparar--;
    }
    
    /**
     * Checa si una unidad está en el rango de disparo.
     * @param u  unidad enemiga
     * @return true si la unidad está en rango, si no, false
     */
    protected boolean enRango( Unidad u ){
        return distancia(u) < 200;
    }
    
    /**
     * Atacar al objetivo.
     */
    public void atacar(){
        apuntar();
        if( turnosParaDisparar == 0 ) {
            turnosParaDisparar = 10;
            Bala_tanque b = new Bala_tanque( color, getRotation() );
            getWorld().addObject( b, getX(), getY() );
            b.move( 30 );
            sonidoDisparo.play();
        }
    }
    
    /**
     * Muere.
     */
    protected void muere(){
        sonidoExplosion.play();
    }
}
